The present invention concerns data communication and pertains particularly to a first-in-first-out synchronizer.
When a circuit interfaces two separate systems with non-correlated and non-synchronous clocks, metastable states can result when a signal from one system is sampled using the clock from the other system. This happens, for example, when a signal from the first system is sampled with the clock of the second system when the signal from the first system is in transition.
In order to alleviate the metastable problem, synchronization circuits are used to provide synchronization for systems with non-correlated and non-synchronous clocks.
Generally the synchronization systems provide a handshake that is independent of the phase and frequency of the producer and consumer clocks.
The conventional way of performing this handshaking process is to fully interlock, via two signals that cross the clock boundary and that must therefore be synchronized, the producer and consumer state machines. The design of these state machines is tricky and has the potential to create subtle problems especially when it is important to operate the handshake at the maximum possible rate.
This interlocking is needed not only in the case where the two clocks are asynchronous but also when two clocks differ in frequency so that one period in a clock domain corresponds to a different number of periods in the other clock domain.
One system that provides for synchronization is set out in U.S. Pat. No. 4,873,703, issued to Douglas Crandall et al., for SYNCHRONIZING SYSTEM. This system provides for reliably passing data across a boundary between two independent, not-correlated clocks. The system reduces occurrence of errors due to asynchronous samplings. The system is implemented as a two port memory and performs a handshake between the two non-correlated clock systems. For further information on synchronizing system of these types, see also, Vince Cavanna, The FIFO/Synchronizer: A Novel FIFO Architecture with Robust Performance as a Synchronizer, Proceedings of On-Chip System Design Conference, Design Supercon97.